package com.zhl.Test;

import java.util.Random;
import java.util.Scanner;

public class TestDemo10 {
    public static void main(String[] args) {
        //目的：开发一组双色球号码，其中红球号码在1-33，蓝球号码在1-16
        //用户 投注的号码
        int[] userselect = UseSelectNumbers();
        print(userselect);
        //系统随机的数组
        int[] setcode = SettingCode();
        print(setcode);
        Judge(userselect,setcode);
        }


        //设计一个打印数组功能
    public static void print(int[] arr){
        System.out.print("[");
        for(int i = 0;i < arr.length;i++){
            System.out.print(i == arr.length-1? arr[i] : arr[i]+",");
        }
        System.out.print("]");
        System.out.println();
    }

        /*
        1.设计一个方法，用于用户投注一组号码并返回 (前六个是红球号码，最后一个是篮球号码)
         */
    public static int[] UseSelectNumbers() {
        //2.创建数组，用于存储用户投注的七个号码(前六个是红球，最后一个是蓝球)
        int[] numbers = new int[7];
        Scanner sc = new Scanner(System.in);
        //3.遍历数组，先存入红球
        for (int i = 0; i < numbers.length-1 ;i++)
        {
            while (true) {
                System.out.println("请您输入第"+(i+1)+"个红球号码(1~33之间，且不能重复):");
                //判断用户输入是否正确
                int number = sc.nextInt();
                if(number< 1 || number > 33)
                {
                    System.out.println("输入错误，你的号码不在1~33之间，请确认!");
                }else {
                    //判断号码是否重复
                    boolean flag = isSameNumber(numbers,number);
                    if(flag)
                    {
                        System.out.println("您输入的号码重复,请确认!");
                    }else {
                        //存入输入的正确号码
                        numbers[i] = number;
                        break;
                    }
                }
            }
        }
        while (true) {
            System.out.println("请投注最后一个,蓝球号码(1~16)：");
            int number = sc.nextInt();
            if (number < 1 || number > 16) {
                System.out.println("你输入的号码不在1~16之间，请确认!");
            }else{
                numbers[6] = number;
                break;
            }
        }
        //返回用户投注的号码
        return numbers;
    }

    //判断号码是否重复
    public static boolean isSameNumber(int[] arr,int num){
        boolean flag = false;
        for (int i = 0; i < arr.length; i++) {
            //为了节省性能，在遍历时看看等不等于 0 ,因为号码是根据索引 ，依次往后填入的
            if (arr[i]==0)
            {
                //等于 0 则，不用再往后遍历比较。因为号码没有0
               break;
            }
            if(arr[i] == num)
            {
                flag = true;
                break;
            }
        }
        return flag;
    }
    /*
    设计一个方法，用于系统开奖并返回 (前六个是红球号码，最后一个是篮球号码)
     */
    public static int[] SettingCode(){
        int[]  setcode = new int[7];
        Random r  = new Random();
        //随机红球号码 1~33之间
        for (int i = 0; i < setcode.length-1;i++){
            while (true) {
                //先随机一个号码  因为是指定的随机号码，所以无须判断是否 不符合范围
                int randomnum = r.nextInt(33)+1;//因为random随机的是0 到 n-1 所以要 +1,使范围到 1~33
                //判断是否重复，若不重复则存入，重复则继续随机
                if(!isSameNumber(setcode,randomnum))
                {
                    //不重复，则录入随机号码,跳出循环
                    setcode[i] = randomnum;
                    break;
                }
            }
        }
        //随机蓝球号码，1~16 ，然后存入数组
        int num = r.nextInt(16)+1;
        setcode[6] = num;
        return setcode;
    }

    /*
    设计一个方法，判断中奖等级
     */
    public static void Judge(int[] arr1,int[] arr2){
        //计算中奖个数
        //红球中奖情况
        int Redcount = 0;
        for(int i = 0;i < arr1.length-1;i++)
        {
            for(int j = 0;j < arr2.length-1;j++)
            {
                if(arr1[i] == arr2[j])
                {
                    Redcount++;
                    break;
                }
            }
        }
        //记录蓝球中奖
        int bluecount = arr1[6] == arr2[6] ? 1 : 0 ;
        //中奖情况
        System.out.println("您命中的红球数是："+Redcount);
        System.out.println("您命中的蓝球数是："+bluecount);

        //计算中奖详情
        if(Redcount==6 && bluecount==1)
        {
            //一等奖
            System.out.println("恭喜你，中奖1000万！");
        }else if(Redcount==6 && bluecount == 0){
            //二等奖
            System.out.println("恭喜你，中奖500万！");
        } else if (Redcount==5 && bluecount ==1){
            //三等奖
            System.out.println("恭喜你，中奖3000元！");
        } else if (Redcount==5 && bluecount == 0) {
            //四等奖
            System.out.println("恭喜你，中奖200元！");
        }else if(Redcount+bluecount==4){
            //五等奖
            System.out.println("恭喜你，中奖10元！");
        }else if(Redcount < 3 && bluecount == 1){
            //六等奖
            System.out.println("恭喜你，中奖5元！");
        }else {
            System.out.println("未中奖！感谢您对福利事业的贡献！！！");
        }
    }



}
